ASP.NET Core-এর একটি শক্তিশালী ফিচার হলো Razor Pages, যা মডেল-ভিউ-কন্ট্রোলার (MVC) আর্কিটেকচারের উপর ভিত্তি করে কাজ করে, তবে এটি বেশি সহজ এবং কোডের পরিস্কারতা উন্নত করে। Razor Pages একটি পেজ-ভিত্তিক প্রোগ্রামিং মডেল, যেখানে প্রতিটি পেজ নিজস্ব Controller এবং View হিসেবে কাজ করে। এটি মূলত ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য উপযোগী, যেখানে প্রজেক্টের স্ট্রাকচার সরল এবং সহজ রাখার প্রয়োজন হয়।
Razor Pages হল ASP.NET Core-এ MVC (Model-View-Controller) আর্কিটেকচারের একটি সরলীকৃত সংস্করণ। এখানে কোড এবং UI (User Interface) একসাথে থাকে, যা অ্যাপ্লিকেশনের একটি নির্দিষ্ট পেজের জন্য কাজ করে। Razor Pages পেজ ভিত্তিক প্রোগ্রামিং মডেল সরবরাহ করে, যেখানে URL মডেলটি পেজের সাথে সরাসরি যুক্ত থাকে এবং Page Model (একটি C# ক্লাস) পেজের সাথে সম্পর্কিত লজিক কন্ট্রোল করে।
.cshtml
ফাইল এবং তার সাথে একটি PageModel
ক্লাস থাকে। এতে ডাটা এবং UI একত্রে সংযুক্ত থাকে।Razor Pages কাজ করে একটি .cshtml ফাইলের মাধ্যমে, যা একটি HTML পেজের মতো কাজ করে, এবং একটি C# ক্লাস ফাইলের মাধ্যমে যা পেজের লজিক এবং ডেটা পরিচালনা করে।
.cshtml
ফাইল হলো Razor Views যেখানে HTML এবং C# কোড একসাথে থাকে। এটি View হিসেবে কাজ করে।
এটি একটি C# ক্লাস যা পেজের মডেল এবং লজিক রক্ষা করে। এই ক্লাসটি পেজের ডেটা এবং রিকোয়েস্ট হ্যান্ডলিং পরিচালনা করে।
Razor Pages-এ সাধারণত ফাইল স্ট্রাকচার নিচের মতো হয়:
/Pages
/Home
Index.cshtml
Index.cshtml.cs (PageModel)
এখানে:
Index.cshtml
: এই ফাইলটি হল পেজের ভিউ যেখানে HTML এবং Razor সিনট্যাক্স থাকে।Index.cshtml.cs
: এই ফাইলটি PageModel ক্লাস, যা পেজের লজিক এবং ডেটা সংরক্ষণ করে।.cshtml ফাইল তৈরি করুন:
@page
<h1>Welcome to Razor Pages</h1>
<p>Your message is: @Model.Message</p>
PageModel ক্লাস তৈরি করুন: Razor Page-এর জন্য একটি C# ক্লাস তৈরি করুন যা PageModel
ক্লাস থেকে ইনহেরিট করবে:
using Microsoft.AspNetCore.Mvc.RazorPages;
public class IndexModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "Hello from Razor Pages!";
}
}
এই পেজটি চালু করার জন্য, Visual Studio থেকে F5 চাপুন বা dotnet run
কমান্ড দিয়ে অ্যাপ্লিকেশনটি রান করুন। ব্রাউজারে গিয়ে পেজ দেখতে পাবেন।
Razor Pages এ ফর্ম হ্যান্ডলিং খুবই সহজ। আপনি OnPost
মেথড ব্যবহার করে পেজের ফর্ম ডাটা প্রসেস করতে পারেন।
@page
<form method="post">
<input type="text" asp-for="Name" />
<button type="submit">Submit</button>
</form>
<p>Your name is: @Model.Name</p>
public class IndexModel : PageModel
{
[BindProperty]
public string Name { get; set; }
public void OnPost()
{
// OnPost will be invoked when the form is submitted
}
}
এখানে, OnPost()
মেথডটি ফর্ম ডেটা প্রসেস করে এবং Name
প্রপার্টি পেজে পাঠিয়ে দেয়।
Razor Pages একটি শক্তিশালী এবং সহজ মডেল ASP.NET Core অ্যাপ্লিকেশন তৈরি করতে, যেখানে ছোট এবং মাঝারি আকারের ওয়েব অ্যাপ্লিকেশন তৈরি সহজ হয়। Razor সিনট্যাক্স এবং PageModel ক্লাসের সমন্বয় একে অত্যন্ত কার্যকর এবং ব্যবহারকারী বান্ধব করে তোলে।
Razor Pages হলো ASP.NET Core-এ একটি পেজ-বেসড প্রোগ্রামিং মডেল, যা MVC (Model-View-Controller) আর্কিটেকচারের একটি সহজ এবং নির্দিষ্ট বিকল্প। Razor Pages মূলত ডেভেলপারদের জন্য একটি সহজ, পরিষ্কার, এবং দ্রুত উপায়ে ওয়েব অ্যাপ্লিকেশন তৈরি করার সুযোগ প্রদান করে। এটি বিশেষভাবে সেই অ্যাপ্লিকেশনগুলির জন্য উপযোগী যেখানে একক পেজ বা ছোট অ্যাপ্লিকেশন তৈরি করা হয়।
Razor Pages অ্যাপ্লিকেশনের প্রতিটি পেজ একটি PageModel (C# ক্লাস) এবং Razor View (HTML এবং Razor সিনট্যাক্স) দ্বারা প্রতিনিধিত্ব করা হয়। এর মধ্যে, PageModel পেজের লজিক এবং ডেটা পরিচালনা করে, আর Razor View পেজের ইউজার ইন্টারফেস উপস্থাপন করে।
PageModel একটি C# ক্লাস যা Razor পেজের ডেটা এবং লজিক ধারণ করে। এটি পেজের সাথে সম্পর্কিত সমস্ত কার্যকলাপ, যেমন ডেটা ফেচিং, ফর্ম সাবমিশন, অথবা পেজের রেসপন্স প্রস্তুত করা, পরিচালনা করে।
Razor View হলো একটি HTML ফাইল যেখানে Razor সিনট্যাক্স ব্যবহৃত হয়। এটি ডাইনামিক কন্টেন্ট সহ HTML উপাদান তৈরি করতে ব্যবহার করা হয়। Razor সিনট্যাক্স C# কোড এবং HTML কোড একত্রিত করে কাজ করে।
একটি সাধারণ Razor Page অ্যাপ্লিকেশন দুটি ফাইলের সমন্বয়ে তৈরি হয়:
এই দুটি ফাইল একই নামের অধীনে একত্রিত হয় এবং একই পেজের অংশ হিসেবে কাজ করে। উদাহরণস্বরূপ, যদি আপনার Razor Page এর নাম About
হয়, তাহলে ফাইল দুটি হবে:
About.cshtml
(Razor View)About.cshtml.cs
(PageModel)Razor পেজ তৈরি করা খুবই সহজ। নিচে একটি উদাহরণ দেয়া হলো:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class AboutModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "This is the About page!";
}
}
@page
@model AboutModel
<!DOCTYPE html>
<html>
<head>
<title>About Page</title>
</head>
<body>
<h1>@Model.Message</h1>
</body>
</html>
এখানে, AboutModel
ক্লাসটি OnGet
মেথডের মাধ্যমে পেজের ডেটা প্রদান করছে এবং Razor View Message
প্রপার্টি রেন্ডার করছে।
Razor Pages ASP.NET Core-এ একটি শক্তিশালী এবং কার্যকরী পেজ-বেসড ডেভেলপমেন্ট মডেল, যা কোডের মেইনটেনেবিলিটি এবং কার্যকারিতা বাড়াতে সাহায্য করে। এটি প্রাথমিকভাবে ছোট বা মধ্যম আকারের অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য উপযুক্ত, যেখানে কমপ্লেক্স কন্ট্রোলার বা মডেল ভিউ কন্ট্রোলার (MVC) আর্কিটেকচারের প্রয়োজন হয় না।
Razor Pages হলো ASP.NET Core এর একটি পেজ-বেজড প্রোগ্রামিং মডেল, যা সাধারণ ওয়েব অ্যাপ্লিকেশন এবং UI ফোকাসড অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ করে। এটি একটি সহজ এবং কার্যকর পদ্ধতিতে UI তৈরির জন্য Model, View এবং Controller-কে একত্রিত করে। Razor Pages বিশেষভাবে ছোট বা মডিউলার অ্যাপ্লিকেশন তৈরির জন্য উপযোগী।
Visual Studio ব্যবহার করে
Command Line ব্যবহার করে
নতুন Razor পেজ অ্যাপ তৈরি করতে নিচের কমান্ড ব্যবহার করুন:
dotnet new razor -n RazorPagesApp
(এখানে RazorPagesApp
হলো অ্যাপের নাম।)
প্রজেক্ট ফোল্ডারে যান এবং অ্যাপ চালু করতে:
cd RazorPagesApp
dotnet run
প্রজেক্ট তৈরি করার পর, নতুন Razor পেজ যুক্ত করতে নিচের ধাপগুলো অনুসরণ করুন।
Visual Studio-তে
About
) এবং ফাইল তৈরি করুন।Manually যোগ করা
.cshtml
ফাইল তৈরি করুন (যেমন About.cshtml
)।.cshtml.cs
ফাইল যুক্ত করুন, যা Page Model হিসেবে কাজ করবে।Razor পেজ দুটি ফাইল নিয়ে গঠিত:
.cshtml
ফাইল: HTML এবং Razor সিনট্যাক্স ব্যবহার করে UI তৈরি করার জন্য।.cshtml.cs
ফাইল: পেজের ব্যাক-এন্ড লজিক এবং ডেটা প্রসেসিং পরিচালনা করে।উদাহরণস্বরূপ, একটি About
পেজের গঠন:
About.cshtml:
@page
@model AboutModel
<!DOCTYPE html>
<html>
<head>
<title>About Page</title>
</head>
<body>
<h1>@Model.Message</h1>
</body>
</html>
About.cshtml.cs:
using Microsoft.AspNetCore.Mvc.RazorPages;
public class AboutModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = "Welcome to the About Page!";
}
}
Razor পেজ সহজেই ফর্ম ডেটা প্রক্রিয়াকরণ করতে পারে। উদাহরণস্বরূপ:
Contact.cshtml:
@page
@model ContactModel
<!DOCTYPE html>
<html>
<head>
<title>Contact Page</title>
</head>
<body>
<form method="post">
<label for="Name">Name:</label>
<input type="text" id="Name" name="Name" />
<button type="submit">Submit</button>
</form>
<p>@Model.Message</p>
</body>
</html>
Contact.cshtml.cs:
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ContactModel : PageModel
{
public string Message { get; set; }
public void OnPost(string Name)
{
Message = $"Hello, {Name}!";
}
}
Razor পেজ অ্যাপ চালু করার পর, পেজগুলো অ্যাক্সেস করতে ব্রাউজারে সংশ্লিষ্ট URL লিখুন। উদাহরণস্বরূপ:
https://localhost:5001/About
https://localhost:5001/Contact
Razor পেজ একটি সরল ও কার্যকরী পদ্ধতি প্রদান করে ছোট ও নির্দিষ্ট অ্যাপ্লিকেশন তৈরির জন্য। এর সরল গঠন এবং ডেটা হ্যান্ডলিং ক্ষমতা ডেভেলপারদের কাজকে সহজ ও দ্রুততর করে তোলে।
Razor পেজ (Razor Pages) হলো ASP.NET Core এর একটি মডেল, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি সহজ এবং পরিষ্কার পদ্ধতি প্রদান করে। Razor পেজে ফর্ম হ্যান্ডলিং খুবই সহজ এবং কার্যকরী, যেখানে ব্যবহারকারীরা বিভিন্ন ইনপুট প্রদান করে এবং সেই ডেটা সার্ভারে প্রক্রিয়া করা হয়।
Razor পেজে ফর্ম হ্যান্ডলিংয়ের জন্য আপনাকে কিছু মৌলিক স্টেপ অনুসরণ করতে হবে, যেমন:
এখানে একটি সাধারণ Razor পেজে ফর্ম হ্যান্ডলিংয়ের উদাহরণ দেওয়া হল, যেখানে একটি কনট্যাক্ট ফর্ম তৈরি করা হয়েছে। ফর্মটি ব্যবহারকারীর নাম এবং ইমেইল গ্রহণ করবে এবং পরবর্তীতে সেই ডেটা প্রদর্শন করবে।
প্রথমে, Razor পেজ তৈরি করতে হবে। আমরা একটি Razor পেজ Contact.cshtml
এবং এর সাথে একটি Contact.cshtml.cs
পেজ মডেল তৈরি করব।
Contact.cshtml
(Razor পেজ)@page
@model RazorPagesExample.Pages.ContactModel
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact Form</title>
</head>
<body>
<h2>Contact Us</h2>
<form method="post">
<div>
<label for="Name">Name:</label>
<input type="text" id="Name" name="Name" value="@Model.Contact.Name" />
</div>
<div>
<label for="Email">Email:</label>
<input type="email" id="Email" name="Email" value="@Model.Contact.Email" />
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
@if (Model.IsSubmitted)
{
<div>
<h3>Thank you for contacting us, @Model.Contact.Name!</h3>
<p>We have received your message and will get back to you soon.</p>
</div>
}
</body>
</html>
এখন, ContactModel.cs
ফাইল তৈরি করতে হবে, যা Razor পেজের লজিক এবং ডেটা হ্যান্ডলিং করবে। এই মডেল ফাইলে আমরা ফর্মের ডেটা বাইনডিং এবং সাবমিট করার পরে সেটি প্রসেস করব।
Contact.cshtml.cs
(Page Model)using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesExample.Pages
{
public class ContactModel : PageModel
{
[BindProperty]
public ContactForm Contact { get; set; }
public bool IsSubmitted { get; set; }
public void OnGet()
{
// প্রাথমিকভাবে পেজ লোড হলে কোনো ডেটা প্রসেস করার প্রয়োজন নেই
}
public void OnPost()
{
if (ModelState.IsValid)
{
// ফর্ম সাবমিট হলে ডেটা প্রসেস করা হয়
IsSubmitted = true;
}
}
}
public class ContactForm
{
public string Name { get; set; }
public string Email { get; set; }
}
}
ContactForm
ক্লাসটি ব্যবহারকারীর ইনপুট ডেটা (নাম এবং ইমেইল) ধারণ করবে।OnPost()
মেথডটি ফর্ম সাবমিট হলে চালু হবে। এখানে আমরা ফর্মের ডেটা প্রসেস করতে পারি, যেমন ডেটাবেজে সেভ করা বা ইমেইল পাঠানো।@Model.Contact.Name
এবং @Model.Contact.Email
Razor পেজে ডেটা প্রদর্শন এবং ব্যবহার করার জন্য ব্যবহার করা হচ্ছে।@Model.IsSubmitted
এর মাধ্যমে আমরা ফর্মটি সফলভাবে সাবমিট হওয়ার পর একটি কনফার্মেশন মেসেজ প্রদর্শন করি।ডেটা ভ্যালিডেশন: Razor পেজে আপনি ডেটা ভ্যালিডেশন করতে পারেন, যেমন DataAnnotations
ব্যবহার করে। উদাহরণস্বরূপ, যদি ব্যবহারকারী ইমেইল ফিল্ডটি খালি রাখে তবে এটি ভ্যালিডেশন ত্রুটি দেখাবে।
উদাহরণ:
public class ContactForm
{
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Email is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
}
অ্যাসিনক্রোনাস (Async) ফর্ম হ্যান্ডলিং: আপনি ফর্ম সাবমিট করার সময় অ্যাসিনক্রোনাস মেথড ব্যবহার করতে পারেন। এটি বড় ফর্ম বা ডেটাবেস সেভ করার মতো কাজের জন্য উপকারী।
উদাহরণ:
public async Task<IActionResult> OnPostAsync()
{
if (ModelState.IsValid)
{
// অ্যাসিনক্রোনাস ডেটা প্রসেসিং
return RedirectToPage("Success");
}
return Page();
}
Razor পেজে ফর্ম হ্যান্ডলিং একটি সহজ এবং কার্যকরী প্রক্রিয়া। Razor পেজ আপনাকে HTML ফর্ম তৈরি এবং তার ডেটা সরাসরি মডেল ক্লাসের মাধ্যমে সার্ভারে প্রক্রিয়াকরণ করতে সাহায্য করে। ডেটা বাইনডিং, ভ্যালিডেশন এবং সাবমিট করার মাধ্যমে আপনি একটি উন্নত ফর্ম হ্যান্ডলিং সিস্টেম তৈরি করতে পারেন।
Razor হলো ASP.NET Core এর একটি ভিউ ইঞ্জিন, যা HTML এবং C# কোডের সংমিশ্রণে ডাইনামিক ওয়েব পেজ তৈরি করতে ব্যবহৃত হয়। এটি সহজ এবং কার্যকর সিনট্যাক্সের মাধ্যমে ডেভেলপারদের জন্য কোড লিখা সহজ করে তোলে। Razor এর একটি প্রধান বৈশিষ্ট্য হলো ডেটা বাইন্ডিং, যা মডেল ডেটাকে ভিউতে প্রদর্শন করার জন্য ব্যবহৃত হয়।
Razor টেমপ্লেটে C# কোড লেখার জন্য @
চিহ্ন ব্যবহার করা হয়। এটি HTML এর মধ্যে ডাইনামিক কন্টেন্ট যুক্ত করতে ব্যবহৃত হয়।
@{
var message = "Welcome to Razor Syntax!";
}
<h1>@message</h1>
উপরের উদাহরণে @{}
ব্লকের মধ্যে একটি C# ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে, যা HTML-এ @message
দিয়ে প্রদর্শিত হয়েছে।
একটি সরল একক লাইনের জন্য @
চিহ্ন ব্যবহার করা হয়।
<p>The current year is @DateTime.Now.Year.</p>
Razor সিনট্যাক্সের মাধ্যমে লুপ এবং কন্ডিশনাল লজিক সহজেই ইমপ্লিমেন্ট করা যায়।
<ul>
@for (int i = 1; i <= 5; i++)
{
<li>Item @i</li>
}
</ul>
@if (DateTime.Now.Hour < 12)
{
<p>Good Morning!</p>
}
else
{
<p>Good Afternoon!</p>
}
Razor টেমপ্লেটে Razor কোডের জন্য @* *@
এবং HTML কোডের জন্য <!-- -->
কমেন্ট স্টাইল ব্যবহার করা হয়।
@* This is a Razor comment *@
<!-- This is an HTML comment -->
Razor টেমপ্লেটে ডেটা বাইন্ডিংয়ের মাধ্যমে মডেল ডেটাকে ভিউতে ব্যবহার করা যায়।
Model:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
Controller:
public IActionResult Index()
{
var product = new Product
{
Name = "Laptop",
Price = 999.99m
};
return View(product);
}
View (Index.cshtml):
@model Product
<h1>Product Details</h1>
<p>Name: @Model.Name</p>
<p>Price: $@Model.Price</p>
একাধিক ডেটা প্রদর্শনের জন্য foreach
লুপ ব্যবহার করা হয়।
@model List<Product>
<h1>Product List</h1>
<ul>
@foreach (var product in Model)
{
<li>@product.Name - $@product.Price</li>
}
</ul>
Razor ডেটা বাইন্ডিং ফর্মের ইনপুট ডেটার সঙ্গে ইন্টিগ্রেট করা যায়।
<form method="post">
<label>Name:</label>
<input type="text" name="Name" />
<br />
<label>Price:</label>
<input type="number" name="Price" />
<br />
<button type="submit">Submit</button>
</form>
Tag Helper Razor ভিউতে HTML ট্যাগের ক্ষমতা বাড়ায়। উদাহরণস্বরূপ, ফর্মের জন্য:
<form asp-action="Save" asp-controller="Product">
<label for="Name">Name:</label>
<input asp-for="Name" class="form-control" />
<label for="Price">Price:</label>
<input asp-for="Price" class="form-control" />
<button type="submit">Submit</button>
</form>
Razor এ Partial View ব্যবহার করে কোড পুনরায় ব্যবহারযোগ্য করা যায়।
@await Html.PartialAsync("_ProductPartial", Model)
Razor ভিউতে Layout ব্যবহার করে কনসিস্টেন্ট পেজ ডিজাইন বজায় রাখা যায়।
@{
Layout = "_Layout";
}
Razor Sections ব্যবহার করে নির্দিষ্ট পেজের জন্য ডায়নামিক কনটেন্ট তৈরি করা যায়।
@section Scripts {
<script src="custom.js"></script>
}
Razor টেমপ্লেট সিনট্যাক্স এবং ডেটা বাইন্ডিং ASP.NET Core অ্যাপ্লিকেশনের একটি মূল অংশ। এটি ডেভেলপারদের জন্য সহজ, দ্রুত এবং কার্যকর পদ্ধতিতে ডাইনামিক ওয়েব পেজ তৈরি করতে সহায়তা করে।
common.read_more